// 自己选择的路，跪着也要走完。朋友们，虽然这个世界日益浮躁起来,只
// 要能够为了当时纯粹的梦想和感动坚持努力下去，不管其它人怎么样,我
// 们也能够保持自己的本色走下去。                      ——AKPower
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <string>
#include <stack>
#include <set>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
using namespace std;
typedef long long ll;
ll t,n,m,a,b;
ll mp[1100][1100];
ll pre[1100][1100];

int main()
{
    IOS;
    cin>>t;
    while(t--){
        cin>>n>>m>>a>>b;
        for(ll i=1;i<=n;i++){
            for(ll j=1;j<=m;j++){
                cin>>mp[i][j];
                pre[i][j]=0;
            }
        }
        for(ll i=1;i<=n;i++){
            for(ll j=1;j<=m;j++){
                pre[i][j]=mp[i][j]-mp[i-1][j]-mp[i][j-1]+mp[i-1][j-1];
            }
        }
        bool flag=true;
        for(ll i=1;i<=n-a+1&&flag;i++){
            for(ll j=1;j<=m-b+1&&flag;j++){
                ll c=pre[i][j];
                if(c<0){
                    flag=false;
                    continue;
                }
                pre[i][j]-=c;
                pre[i][j+b]+=c;
                pre[i+a][j]+=c;
                pre[i+a][j+b]-=c;
                
            }
        }
        for(ll i=1;i<=n;i++){
            for(ll j=1;j<=m;j++){
                mp[i][j]=pre[i][j]+mp[i-1][j]+mp[i][j-1]-mp[i-1][j-1];
                if(mp[i][j])flag=false;
            }
        }
        if(flag)cout<<"^_^"<<endl;
        else cout<<"QAQ"<<endl;
    }
    getchar();
    getchar();
    return 0;
}
